#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import multiprocessing

def is_prime(n):
    # 判断是否为质数
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

def calculate_primes(start, end, result_list):
    primes = []
    for i in range(start, end):
        if is_prime(i):
            primes.append(i)
    result_list.extend(primes)

if __name__ == '__main__':
    start = time.time()

    # 计算机上可用的 CPU 核心数量
    num_cores = multiprocessing.cpu_count()
    print('Number of CPU cores:', num_cores)

    # 创建多个进程来计算质数
    processes = []
    manager = multiprocessing.Manager()
    result_list = manager.list()

    for i in range(num_cores):
        p = multiprocessing.Process(target=calculate_primes, args=(i + 1, 10000000, result_list))
        processes.append(p)
        p.start()

    # 等待所有进程完成
    for p in processes:
        p.join()

    # 如果需要，可以在这里执行其他操作，而不是直接打印结果
    # 例如，将结果保存到文件中或进行其他处理
    # 这里仅仅打印结果
    # print(result_list)

    end = time.time()
    print('Total time:', end - start, 'seconds.')
